package org.moore.utils;

import org.moore.model.User;

import java.sql.*;

// 用户工具类
public class UserUtils {
    // 获取账号和密码
    public static User findAccAndPwdByAdmin(String acc, String pwd) {
        // 反射
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("依赖加载成功！！！"); //测试语句，后续忽略
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("依赖加载失败......"); //测试语句
        }
        System.out.println("开始数据库操作......"); //测试语句
        // JDBC
        // 定义SQL语句
        String sql = "select * from t_user where acc = '" + acc + "' and pwd = '" + pwd + "'";
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            // 获取连接
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jf240503db", "Moore", "123456");
            // 创建会话对象
            st = conn.createStatement();
            // 使用会话对象，执行sql语句
            // 执行查询语句并返回查询的结果集
            rs = st.executeQuery(sql);
            while (rs.next()) {
                // 如果有下一个元素
                int id = rs.getInt("id");
                String acc1 = rs.getString("acc");
                String pwd1 = rs.getString("pwd");
                String name = rs.getString("name");
                return new User(id, acc1, pwd1, name);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (rs != null) {
                try {
                    rs.close();
                } catch(SQLException e) {
                    e.printStackTrace();
                }
            }
            if (st != null) {
                try {
                    st.close();
                } catch(SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch(SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

    // 注册账号
    public static void insertAdmin(User ad) {
        // 反射
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("依赖加载成功！！！"); //测试语句，后续忽略
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("依赖加载失败......"); //测试语句
        }
        System.out.println("开始数据库操作......"); //测试语句
        // JDBC
        // 定义SQL语句
        String sql = "insert into t_user values (?,?,?,?)";
        Connection conn = null;
        PreparedStatement pst = null;
        try {
            // 获取连接
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jf240503db", "Moore", "123456");
            // 创建会话对象 预编译对象
            pst = conn.prepareStatement(sql);
            pst.setString(1, String.valueOf(User.getId()));
            pst.setString(2, ad.getAccount());
            pst.setString(3, ad.getPassword());
            pst.setString(4, ad.getName());
            // 使用会话对象，执行sql语句 返回 受影响的条数
            pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (pst != null) {
                try {
                    pst.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }


}
